import Foundation from "./Foundation.js";
import storage from "@/utils/storage.js";
import BigNumber from 'bignumber.js'
/**
 * 金钱单位置换  2999 --> 2,999.00
 * @param val
 * @param unit
 * @param location
 * @returns {*}
 */
// 格式化价格  两位小数
export function formatPrice(val, index) {
	if (typeof val == "undefined") {
		return val;
	}
	if (val > 0) {
		val = parseFloat(val)
		return val.toFixed(2).split(".")[index];
	} else {
		return val
	}
}
// 格式化价格  两位小数
export function formatPriceTwo(val) {
	if (typeof val == "undefined") {
		return val;
	}
	if (val > 0) {
		val = parseFloat(val)
		return val.toFixed(2)
	} else {
		return val
	}
}
// 格式化价格  两位小数
export function formatWalletTwo(val) {
	if (typeof val == "undefined") {
		return 0;
	}
	return new BigNumber(val).dp(2, BigNumber.ROUND_DOWN)
}
export function rmbPrice(val, vipLevel) {
	if (typeof val == "undefined") {
		return '';
	}
	let rate = 0.94;
	let vipRate = storage.getVipRate();
	if (vipRate) {
		rate = vipRate[vipLevel].rate
	} else {
		if (vipLevel == '1') {
			rate = 0.88
		} else if (vipLevel == '2') {
			rate = 0.78
		} else {
			rate = 0.94
		}
	}
	return '￥' + new BigNumber(val).multipliedBy(rate).dp(2, BigNumber.ROUND_DOWN)
}

export function unitPrice(val, unit, location) {
	if (!val) val = 0;
	let price = Foundation.formatPrice(val);
	if (location === "before") {
		return price.substr(0, price.length - 3);
	}
	if (location === "after") {
		return price.substr(-2);
	}
	return (unit || "") + price;
}
export function rateTen(val) {
	let num = new BigNumber(val)
	return num.multipliedBy(10)
}
/**
 * 会员折扣价格
 */
export function viptext(val) {
	if (typeof val == "undefined") {
		return '';
	}
	let rate = 0.94;
	let vipRate = storage.getVipRate();
	if (!vipRate) {
		return ''
	} 
	let jin='￥' + new BigNumber(val).multipliedBy(vipRate[2].content).dp(2, BigNumber.ROUND_DOWN)
	let yin='￥' + new BigNumber(val).multipliedBy(vipRate[1].rate).dp(2, BigNumber.ROUND_DOWN)
	let arr=[]
	if(vipRate[2].content){
		arr.push(`${vipRate[2].name}<span style="font-weight: bold;">${jin}</span>`)
	}
	if(vipRate[1].content){
		arr.push(`${vipRate[1].name}<span style="font-weight: bold;">${yin }</span>`)
	}
	return 	arr.join(',')
}
/**
 * 会员折扣价格
 */
export function vipPrice(val) {
	let userInfo = storage.getUserInfo()
	if (userInfo && userInfo.gradeName) {
		let rate = storage.getVipRate()
		if (userInfo.gradeName + '' == '0') {
			val = new BigNumber(val)
			val = val.multipliedBy(rate['0'].rate).dp(2, BigNumber.ROUND_DOWN)
			return val;
		}
		if (userInfo.gradeName + '' == '1') {
			val = new BigNumber(val)
			val = val.multipliedBy(rate['1'].rate).dp(2, BigNumber.ROUND_DOWN)
			return val;
		}
		if (userInfo.gradeName + '' == '2') {
			val = new BigNumber(val)
			val = val.multipliedBy(rate['2'].rate).dp(2, BigNumber.ROUND_DOWN)
			return val;
		}
	} else {
		return val;
	}
}

/**
 * 脱敏姓名
 */

export function noPassByName(str) {
	if (null != str && str != undefined) {
		if (str.length <= 3) {
			return "*" + str.substring(1, str.length);
		} else if (str.length > 3 && str.length <= 6) {
			return "**" + str.substring(2, str.length);
		} else if (str.length > 6) {
			return str.substring(0, 2) + "****" + str.substring(6, str.length);
		}
	} else {
		return "";
	}
}

/**
 * 处理unix时间戳，转换为可阅读时间格式
 * @param unix
 * @param format
 * @returns {*|string}
 */
export function unixToDate(unix, format) {
	let _format = format || "yyyy-MM-dd hh:mm:ss";
	const d = new Date(unix * 1000);
	const o = {
		"M+": d.getMonth() + 1,
		"d+": d.getDate(),
		"h+": d.getHours(),
		"m+": d.getMinutes(),
		"s+": d.getSeconds(),
		"q+": Math.floor((d.getMonth() + 3) / 3),
		S: d.getMilliseconds(),
	};
	if (/(y+)/.test(_format))
		_format = _format.replace(
			RegExp.$1,
			(d.getFullYear() + "").substr(4 - RegExp.$1.length)
		);
	for (const k in o)
		if (new RegExp("(" + k + ")").test(_format))
			_format = _format.replace(
				RegExp.$1,
				RegExp.$1.length === 1 ? o[k] : ("00" + o[k]).substr(("" + o[k]).length)
			);
	return _format;
}

/**
 * 13888888888 -> 138****8888
 * @param mobile
 * @returns {*}
 */
export function secrecyMobile(mobile) {
	mobile = String(mobile);
	if (!/\d{11}/.test(mobile)) {
		return mobile;
	}
	return mobile.replace(/(\d{3})(\d{4})(\d{4})/, "$1****$3");
}

/**
 * 清除逗号
 *
 */
export function clearStrComma(str) {
	str = str.replace(/,/g, ""); //取消字符串中出现的所有逗号
	return str;
}

/**
 * 判断用户是否登录
 * @param val  如果为auth则判断是否登录
 * 如果传入 auth 则为判断是否登录
 */
export function isLogin(val) {
	let loginState = storage.getHasLogin();
	if (val == "auth") {
		return loginState ? true : false;
	} else {
		return storage.getUserInfo();
	}
}

/**
 * 验证是否登录如果没登录则去登录
 * @param {*} val
 * @returns
 */

export function forceLogin() {
	let loginState = storage.getHasLogin();
	if (!loginState) {
		// #ifdef MP-WEIXIN

		uni.navigateTo({
			url: "/pages/passport/wechatMPLogin",
		});
		// #endif

		// #ifndef MP-WEIXIN

		uni.navigateTo({
			url: "/pages/passport/login",
		});

		//  #endif
	}
}

/**
 * 退出登录清空缓存数据
 */
export function clearAllStorage() {
	console.log('清除缓存')
	storage.removeUuid();
	storage.removeAccessToken();
	storage.removeRefreshToken();
	storage.removeUserInfo();
	storage.removeVipRate();
	storage.removeGuideVip()
	storage.removeBusiness()
	storage.removeBusinessRecharge()
	storage.removeNewUser()
	storage.setHasLogin(false);
}

/**
 * 获取当前加载的页面对象
 * @param val
 */
export function getPages(val) {
	const pages = getCurrentPages(); //获取加载的页面
	const currentPage = pages[pages.length - 1]; //获取当前页面的对象
	const url = currentPage.route; //当前页面url

	return val ? currentPage : url;
}

/**
 * 跳转到登录页面
 */
export function navigateToLogin(type = "navigateTo") {
	/**
	 * 此处进行条件编译判断
	 * 微信小程序跳转到微信小程序登录页面
	 * H5/App跳转到普通登录页面
	 */
	// #ifdef MP-WEIXIN
	uni[type]({
		url: "/pages/passport/wechatMPLogin",
	});
	// #endif
	// #ifndef MP-WEIXIN
	uni[type]({
		url: "/pages/passport/login",
	});
	//  #endif
}

/**
 * 服务状态列表
 */
export function serviceStatusList(val) {
	let statusList = {
		APPLY: "申请售后",
		PASS: "通过售后",
		REFUSE: "拒绝售后",
		BUYER_RETURN: "买家退货，待卖家收货",
		SELLER_RE_DELIVERY: "商家换货/补发",
		SELLER_CONFIRM: "卖家确认收货",
		SELLER_TERMINATION: "卖家终止售后",
		BUYER_CONFIRM: "买家确认收货",
		BUYER_CANCEL: "买家取消售后",
		WAIT_REFUND: "等待平台退款",
		COMPLETE: "完成售后",
	};
	return statusList[val];
}

/**
 * 订单状态列表
 */
export function orderStatusList(val) {
	let orderStatusList = {
		UNDELIVERED: "待发货",
		UNPAID: "未付款",
		PAID: "已付款",
		DELIVERED: "已发货",
		CANCELLED: "已取消",
		COMPLETED: "已完成",
		COMPLETE: "已完成",
		TAKE: "待核验",
		AFTERSALEING: "售后中",
		AFTERSALEFINISHED: "售后完成"
	};
	return orderStatusList[val];
}

/**
 * 格式化距离
 */
export function FormatDistance(distance) {
	if (!distance) {
		return ''
	}
	let dis = parseInt(distance)
	if (dis < 1000) {
		return dis + '米'
	} else {
		return new BigNumber(dis).div(1000).dp(2, BigNumber.ROUND_DOWN).toNumber() + '公里'
	}
}
